﻿using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using MyWebApp.Filter;
using System;

namespace MyWebApp.Controllers
{
    /// <summary>
    /// 资源过滤器测试
    /// </summary>
    public class ResourceFilterController : ControllerBase
    {
        /// <summary>
        /// 内存缓存对象
        /// </summary>
        private readonly  IMemoryCache _memoryCache;
        /// <summary>
        /// 构造注入
        /// </summary>
        /// <param name="memoryCache"></param>
        public ResourceFilterController(IMemoryCache memoryCache)
        {
            _memoryCache = memoryCache;
        }
         
        /// <summary>
        /// 资源过滤器测试，获取接口第一次调用时间
        /// 如果第一次调用Action：会进入Action执行方法体
        /// 如果不是第一次调用Action：在资源过滤器中直接短路返回第一次调用时间
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public ActionResult Test()
        {
            string content = "Action第一次执行调用时间：" + DateTime.Now;
            var value = _memoryCache.Get("key"); //判断内存中是否有内容，有就直接返回，不再执行action过程。
            if (value == null)
            {
                _memoryCache.Set("key", content);
            }
            return Ok(new { IsSuccess = true, Msg = content });  
        }
    }
}
